package site.shihuan.helpdesk.service.dao;

import org.springframework.stereotype.Repository;
import site.shihuan.helpdesk.service.model.po.SvcCustomerPO;

import java.util.List;

/**
 * 客户(SvcCustomer)表数据库访问层
 *
 * @author 周世焕
 * @since 2021-04-25 10:57:47
 */
@Repository
public interface SvcCustomerDao {

    /**
     * 通过主键查询单条数据
     *
     * @param customerId
     * @return 影响行数
     */
    SvcCustomerPO selectByPrimaryKey(String customerId);

    /**
     * 新增数据
     *
     * @param svcCustomer 实例对象
     * @return 影响行数
     */
    int insert(SvcCustomerPO svcCustomer);

    /**
     * 新增数据（可选字段）
     *
     * @param svcCustomer 实例对象
     * @return 影响行数
     */
    int insertSelective(SvcCustomerPO svcCustomer);

    /**
     * 修改数据
     *
     * @param svcCustomer 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKey(SvcCustomerPO svcCustomer);

    /**
     * 修改数据(可选字段)
     *
     * @param svcCustomer 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(SvcCustomerPO svcCustomer);

    /**
     * 通过主键删除数据
     *
     * @param customerId
     * @return 影响行数
     */
    int deleteByPrimaryKey(String customerId);

    /**
     * 查询租户下的客户列表
     * @param tenantId
     * @param userId
     * @return
     */
    List<SvcCustomerPO> selectByTenantId(String tenantId, String userId);

    /**
     * 查询租户下的关注客户列表
     * @param tenantId
     * @param userId
     * @return
     */
    List<SvcCustomerPO> selectFollowByTenantId(String tenantId, String userId);


    /**
     * 删除客户
     * @param tenantId
     * @param customerId
     * @return
     */
    int deleteByTenantId(String tenantId, String customerId);


}
